package pt.iscte.pcd.santaclaus;

public class Porta {

	public int nElfos = 0;
	private final int minElfosParaAbrir;

	public Porta(int minElfosParaAbrir) {
		this.minElfosParaAbrir = minElfosParaAbrir;
	}
	
	public int nElfos() {
		return nElfos;
	}

	public synchronized void visitar(Cama cama) throws InterruptedException {
		nElfos++;
		System.out.println(nElfos + " elfos em espera");
		if (nElfos == minElfosParaAbrir) {
			System.out.println("Acordando o PaiNatal");
			cama.acorda();
		}
		while (nElfos != minElfosParaAbrir) {
			System.out.println("Elfo espera");
			wait();
			System.out.println("Elfo notificado");
		}
		System.out.println("Elfo entrou");
	}

	public synchronized void abre() {
		System.out.println("Porta abre");
		notifyAll();
		
	}

	public synchronized void setNElfos(int i) {
		nElfos = i;		
	}

}
